As society's reliance on information technology services increases, so too does the need for more efficient and effective modes of data transmission upon which the dissemination of information relies. In a modern Internet, many millions of devices may be communicating at any given moment. Those devices require the near constant transmission and reception of data streams. Data streams may be divided into individual data packets for transmission over a data packet switching network and then reassembled at a point of reception. Data packet transmission offers many efficiencies including the ability to send data packets from the same data stream over different routes.
In order to effectively manage data packed transmission, routers may be employed to forward data packets. Some of the tasks typically assigned to a router may be: receiving data packets; storing data packet routes; selecting data packet routes; and transmitting data packets. Each of these tasks may be assigned individually or in combination to a hardware component or a software component of a typical router. Generally speaking, tasks assigned to a hardware component are more efficient than those assigned to a software component. For example, a hardware component having a routing table populated with any number of data packet routes may be much more efficient at routing data packets than a software component having similar characteristics. In some examples, hardware routing may be many thousands of times faster than a software component.
One reason for this efficiency is that hardware component routing tables are generally configured with special-purpose, fixed functionality, while software component routing tables are generally configured with generic customizable functionality. Thus, while both hardware and software routing tables may contain known and resolved routes, for example, hardware component routing may be configured to enable routing for a specific set of data packets. Software components, on the other hand, may, in some examples, require additional processing to determine an appropriate route for any number of generic data packets. In examples where a route may not be present in a hardware table, a software component may issue a query to find an appropriate route, may issue a flood for a data packet in order to find an appropriate route, or may ignore a data packet in the absence of an appropriate route. These additional tasks may require additional processing time often resulting in greater latency in a routing system.
One conventional solution to this problem is to allow a software component to programmatically modify a hardware routing table when a specific route is acquired. In this manner, new data packet routes may be more efficiently transmitted. However, this method may have drawbacks. One drawback is that a system may become increasingly unstable where many additions and deletions to a hardware routing table are constantly taking place. Special care must be taken, in those cases, to avoid overlapping routes. Further, where a hardware routing table must be maintained in a particular order, additions and deletions may require shifting the entire contents of a table for each addition and deletion. Still further, adding individual routes to a hardware routing table may not allow for the programming of a less specific route if a more specific route cannot be resolved. Thus it may be desirable to modify a hardware routing table in such a way as to avoid table instability, avoid overlapping routes, and allow less specific routes to be programmed. Therefore systems and methods of using pseudo-routes for data transmissions are presented herein.